package info.motteke.mixivoice4j.body;


/**
 * 本文を再構築し、文字列化するためのクラスです。
 *
 * @author Y.Wakamatsu
 *
 */
public class ToStringVisitor implements BodyVisitor<String> {

    /** 構築中の本文を格納するバッファです。 */
    private final StringBuilder buf = new StringBuilder();

    @Override
    public String getValue() {
        return buf.toString();
    }

    @Override
    public void visit(StringElement stringElement) {
        buf.append(stringElement.getBody());
    }

    @Override
    public void visit(LinkElement linkElement) {
        buf.append(' ');
        buf.append(linkElement.getUrl());
        buf.append(' ');
    }

    @Override
    public void visit(IconElement iconElement) {
        if(buf.length() != 0){
            buf.append(' ');
        }

        buf.append("[m:")
           .append(iconElement.getImageNumber())
           .append(" ")
           .append(iconElement.getAlt())
           .append("]");
    }
}
